﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using LPrisaMVC.Entities;
using LPrisaMVC.DAO;
using Microsoft.Practices.Unity;

namespace LPrisaMVC.BusinessLogic
{
    public class HistorialVentaBL : IHistorialVentaBL
    {
        [Dependency]
        public IHistorialVentaDAO HistorialVentaDAO { get; set; }

        [Dependency]
        public IProductoDAO productoDAO { get; set; }

        public List<HISTORIAL_VENTAS> GetAllFromHistorialVentas()
        {
            return HistorialVentaDAO.GetAllFromHistorialVentas();
        }

        public List<HISTORIAL_VENTAS> GetFromHistorialVentasbyFechasAndProductoAndContado(DateTime? fec1, DateTime? fec2, string producto, bool contado)
        {
            return HistorialVentaDAO.GetFromHistorialVentasbyFechasAndProductoAndContado(fec1, fec2, producto, contado);
        }

        public List<HISTORIAL_VENTAS> GetFromHistorialVentasbyFechasAndProductoAndCredito(DateTime? fec1, DateTime? fec2, string producto, bool credito)
        {
            return HistorialVentaDAO.GetFromHistorialVentasbyFechasAndProductoAndCredito(fec1, fec2, producto, credito);
        }

        public List<HISTORIAL_VENTAS> GetFromHistorialVentasbyFechasAndProductoAndMenudeo(DateTime? fec1, DateTime? fec2, string producto, bool menudeo)
        {
            return HistorialVentaDAO.GetFromHistorialVentasbyFechasAndProductoAndMenudeo(fec1, fec2, producto, menudeo);
        }

        public HISTORIAL_VENTAS GetFromHistorialVentasById(int id)
        {
            return HistorialVentaDAO.GetFromHistorialVentasById(id);
        }

        public void AddHistorialVentas(HISTORIAL_VENTAS historialVenta)
        {
            HistorialVentaDAO.AddHistorialVentas(historialVenta);
            //if (historialVenta.Total <= 5)
            //{
            //    
            //}
            //else
            //{
            //    var error = string.Format("Para un monto mayor a S/5.00 es necesario emitir una boleta");
            //    throw new Exception(error);
            //}
        }

        public void UpdateHistorialVenta(int idProducto, DateTime? fecha, decimal precio, int cantidadAct, int nuevaCant)
        {
            HistorialVentaDAO.UpdateHistorialVenta(idProducto, fecha, precio, cantidadAct, nuevaCant);
        }

        public void UpdateHistorialCredito(int idProducto, DateTime? fecha, Decimal precio, int cantidadAct, int nuevaCant)
        {
            HistorialVentaDAO.UpdateHistorialCredito(idProducto, fecha, precio, cantidadAct, nuevaCant);
        }

        public void RemoveHistorialVentas(int idProducto, DateTime? fecha, Decimal precio, int cantidad)
        {
            HistorialVentaDAO.RemoveHistorialVentas(idProducto, fecha, precio, cantidad);
        }

        public void RemoveHistorialCredito(int idProducto, DateTime? fecha, decimal precio, int cantidad)
        {
            HistorialVentaDAO.RemoveHistorialCredito(idProducto, fecha, precio, cantidad);
        }


        public void CierreDeCaja(DateTime? FechaHistorial)
        {
            HistorialVentaDAO.CierreDeCaja(FechaHistorial);
        }
    }
}
